lexer grammar AnalizadorXMLLexer;

options {
  language = Java;
}

@header {package PL.practica6;}

@members{

ArrayList <RecognitionException> errores = new ArrayList<RecognitionException>();

public boolean listaVacia (){
    if (errores.isEmpty()){
      return true;
    }else
      return false;
}

public ArrayList getListaErrores(){return errores;}


@Override
public void reportError (RecognitionException e){
  System.out.println (getErrorMessage(e, getTokenNames()));
  errores.add(e);
}

}

   fragment NUEVA_LINEA: '\r\n';
   fragment DIGITO: '0'..'9';
   fragment LETRA : ('a'..'z')|('A'..'Z')|'_';
   IGUAL : '=';
  ABRIRANGULO : '<';
  CERRARANGULO :'>';
  ANGULOSLASH : '</';
  BLANCO: (' '|'\t'|NUEVA_LINEA) {skip();};
  BIBLIO : 'biblioteca';
  LIB : 'libro';
  TIT: 'titulo';
  AUT : 'autor';
  EDIT : 'editorial';
  NUMERO: (DIGITO)+('.'(DIGITO)+)?;
  OPERADOR: '+'|'-'|'/'|'*';
  PARENTESIS: '('|')';
  SEPARADOR: ';';
  SIMBOLOS : '&'|'.';
  COMENTARIO: '<!--' (options {greedy=false;}:.)* '-->' {skip();};
  PALABRA: LETRA(LETRA|DIGITO)*;
  VALOR: '"'(options {greedy=false;}:.)* '"';
  //ETIQUETAINI: '<' (options {greedy=false;}:.)* '>';
  //ETIQUETAFIN:  '</' (options {greedy=false;}:.)* '>';
//  BIBLIOINI: '<' BIBLIO '>';
//  BIBLIOFIN: '</' BIBLIO '>';
//  LIBINI: '<' LIB '>';
//  LIBFIN: '</' LIB '>';
//  TITINI: '<' TIT '>';
//  TITFIN: '</' TIT '>';
//  AUTINI: '<' AUT '>';
//  AUTFIN: '</' AUT '>';
//  EDITINI: '<' EDIT '>';
//  EDITFIN: '</' EDIT '>';
//  ATRIBUTO : {flag}? PALABRA IGUAL CADENA;
